#include<vector>
using namespace std;
//
//int dx[4] = { 0, 0, -1, 1 };
//int dy[4] = { 1, -1, 0, 0 };
//int co, tmp;
//bool vis[51][51];
//int m, n;
//void dfs(vector<vector<int>>& image, int i, int j)
//{
//    for (int k = 0; k < 4; k++)
//    {
//        int x = i + dx[k], y = j + dy[k];
//        if (x >= 0 && x < m && y >= 0 && y < n && image[x][y] == tmp && !vis[x][y])
//        {
//            vis[x][y] = true;
//            image[x][y] = co;
//            dfs(image, x, y);
//        }
//    }
//}
//vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) {
//    m = image.size(), n = image[0].size();
//    tmp = image[sr][sc];
//    image[sr][sc] = color;
//    vis[sr][sc] = true;
//    co = color;
//    dfs(image, sr, sc);
//    return image;
//}

//int dx[4] = { 0, 0, -1, 1 };
//int dy[4] = { 1, -1, 0, 0 };
//bool vis[300][300];
//int m, n;
//void dfs(vector<vector<char>>& grid, int i, int j)
//{
//    for (int k = 0; k < 4; k++)
//    {
//        int x = i + dx[k], y = j + dy[k];
//        if (x >= 0 && x < m && y >= 0 && y < n && !vis[x][y] && grid[x][y] == '1')
//        {
//            vis[x][y] = true;
//            dfs(grid, x, y);
//        }
//    }
//}
//int numIslands(vector<vector<char>>& grid) {
//    m = grid.size(), n = grid[0].size();
//    int ret = 0;
//    for (int i = 0; i < m; i++)
//    {
//        for (int j = 0; j < n; j++)
//        {
//            if (grid[i][j] == '1' && !vis[i][j])
//            {
//                vis[i][j] = true;
//                dfs(grid, i, j);
//                ret++;
//            }
//        }
//    }
//    return ret;
//}

int dx[4] = { 0, 0, -1, 1 };
int dy[4] = { 1, -1, 0, 0 };
bool vis[50][50];
int m, n;
int ret, area;
void dfs(vector<vector<int>>& grid, int i, int j)
{
    ret = max(ret, area);
    for (int k = 0; k < 4; k++)
    {
        int x = i + dx[k], y = j + dy[k];
        if (x >= 0 && x < m && y >= 0 && y < n && !vis[x][y] && grid[x][y])
        {
            vis[x][y] = true;
            area++;
            dfs(grid, x, y);
        }
    }
}
int maxAreaOfIsland(vector<vector<int>>& grid)
{
    m = grid.size(), n = grid[0].size();
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (grid[i][j] && !vis[i][j])
            {
                vis[i][j] = true;
                area = 1;
                dfs(grid, i, j);
            }
        }
    }
    return ret;
}


int main()
{


	return 0;
}